package com.misboot.document.client;

import com.misboot.document.client.fallbackFactory.MdataClientFallbackFactory;
import com.misboot.document.config.FeignConfig;
import com.misboot.document.constants.FeignClientName;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;


/**
 * 调用misboot-mdata相关接口
 * 本地开发时可以指定 ip+网关端口进行访问  在configuration中配置 url = "http://192.168.1.104:9774/system"
 *
 * @Author 湖南佐佑时代科技有限公司
 * @Version 5.4.21
 * @Email service@zuoyo.com
 * @Date 2022-06-13 09:39:40
 */
@FeignClient(name = FeignClientName.MDATA_SERVER_NAME,
        configuration = FeignConfig.class, fallbackFactory = MdataClientFallbackFactory.class)
public interface MdataClient {


    /**
     * @MethodName getUserByUuid
     * @Description
     * @Param uuid
     * @Return cn.ewsd.document.model.User
     * @Author 罗章恒(luozhangheng @ zuoyoutech.com)
     * @Date 2018-12-29 14:04
     */
    @GetMapping("/user/getUserByUuid")
    Map<String, Object> getUserByUuid(@RequestParam("uuid") String uuid);


    /**
     * @MethodName getRoleIdByUserNameId
     * @Description
     * @Param userNameId
     * @Return java.lang.String
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:07
     */
    @GetMapping("/user/getRoleIdByUserNameId")
    String getRoleIdByUserNameId(@RequestParam("userNameId") String userNameId);

    /**
     * @MethodName checkUserExistByUserNameId
     * @Description
     * @Param userNameId
     * @Return java.lang.Integer
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:08
     */
    @GetMapping("/user/checkUserExistByUserNameId")
    Integer checkUserExistByUserNameId(@RequestParam("userNameId") String userNameId);

    /**
     * @MethodName getUserByOrgIdAndPosition
     * @Description
     * @Param orgId
     * @Param position
     * @Return cn.ewsd.document.model.User
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:10
     */
    @GetMapping("/getUserByOrgIdAndPosition")
    Map<String, Object> getUserByOrgIdAndPosition(@RequestParam("orgId") String orgId, @RequestParam("position") String position);

    /**
     * @MethodName getListByNameAndOrgid
     * @Description
     * @Param userDutyName
     * @Param userOrgId
     * @Return cn.ewsd.document.model.User
     * @Author 罗章恒（luozhangheng  @  zuoyoutech.com>
     * @Date 2018-12-29 14:37
     */
    @GetMapping("/user/getListByNameAndOrgid")
    Map<String, Object> getListByNameAndOrgid(@RequestParam("userDutyName") String userDutyName, @RequestParam("userOrgId") String userOrgId);


    /**
     * @MethodName getListById
     * @Description
     * @Param id
     * @Return cn.ewsd.document.model.User
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:17
     */
    @GetMapping("/user/getListById")
    Map<String, Object> getListById(@RequestParam("id") String id);


    /**
     * @MethodName getUserByUserNameId
     * @Description
     * @Param userNameId
     * @Return cn.ewsd.document.model.User
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:20
     */
    @RequestMapping(value = "/user/getUserByUserNameId", method = RequestMethod.POST)
    Map<String, Object> getUserByUserNameId(@RequestParam("userNameId") String userNameId);

    /**
     * @MethodName getUserByCuuid
     * @Description
     * @Param myUuid
     * @Return cn.ewsd.document.model.User
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:21
     */
    @GetMapping("/user/getUserByCuuid")
    Map<String, Object> getUserByCuuid(@RequestParam("myUuid") String myUuid);






    /**
     * @MethodName getLimitedListByHql
     * @Description
     * @Param q
     * @Param i
     * @Param i1
     * @Return java.util.List<cn.ewsd.document.model.User>
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:46
     */
    @GetMapping("/user/getLimitedListByHql")
    List<Map<String, Object>> getLimitedListByHql(@RequestParam("q") String q, @RequestParam("i") int i, @RequestParam("i1") int i1);

    /**
     * @MethodName getListByHql
     * @Description
     * @Param hql
     * @Return java.util.List<cn.ewsd.document.model.User>
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:27
     */
    @GetMapping("/getListByHql")
    List<Map<String, Object>> getListByHql(@RequestParam("hql") String hql);

    /**
     * @MethodName getLimitedListByQ
     * @Description
     * @Param q
     * @Return java.util.List<cn.ewsd.document.model.User>
     * @Author 罗章恒（luozhangheng@zuoyoutech.com）
     * @Date 2018-12-29 14:28
     */
    @ResponseBody
    @GetMapping("/getLimitedListByQ")
    List<Map<String, Object>> getLimitedListByQ(@RequestParam("q") String q);

    @ResponseBody
    @RequestMapping("/getGroupUuidsByIds")
    String getGroupUuidsByIds(@RequestParam("ids") String ids);


}
